import { tnNavPage } from '@tuniao/tnui-vue3-uniapp/utils'
import Request from '@/uni_modules/luch-request/index.js'
import { MP_API_URL, USER_TOKEN, USER_TOKEN_HEADER } from '@/api/config.js'
import storage from '@/utils/storage'

const http = new Request()

http.setConfig((config) => {
  /* 设置全局配置 */
  config.header = {
    ...config.header,
  }
  return config
})

// 请求拦截
http.interceptors.request.use(
  (config) => {
    // 可使用async await 做异步操作
    config.baseURL = MP_API_URL
    config.header = {
      ...config.header,
      server: true,
      'Ba-User-Token': storage.get(USER_TOKEN),
    }
    return config
  },
  (err) => {
    return Promise.reject(err)
  }
)

// 响应拦截
http.interceptors.response.use(
  (response) => {
    if (response) {
      if (response.statusCode == 200) {
        if (response.data.code == 401) {
          // 跳转登录页
          setTimeout(() => {
            tnNavPage('/pages/login/login')
          }, 2000)
          return response.data
        } else if (response.data.code == 403) {
          // 无操作权限
          uni.showToast({
            title: '无操作权限',
            icon: 'none',
          })
          return
        } else {
          return response.data
        }
      }
    }
    return response
  },
  (err) => {
    // 状态码401也有可能在这里，具体看后端咋返回给你
    // 刷新的逻辑与响应成功的一样
    return Promise.reject(err)
  }
)

export default http
